我想應該有許多 IT 邦幫忙的作者都很關心自己文章的瀏覽數,像筆者就是一個喜歡三不五時去看看自己文章增加多少瀏覽量的人;剛好有其他創作者反映希望可以透過工具取得自己所有文章的瀏覽/Like/留言總數,而不是靠計算機土法煉鋼來計算。
藉此機會筆者就研究了一下「puppeteer」這個套件的用法,再花一點時間把小工具寫出來,完整的程式碼如下:
main.js
const puppeteer = require("puppeteer");
require("dotenv").config();
(async () => {
const ithelp_url = process.env.ITHELP_URL || "https://google.com/";
const browser = await puppeteer.launch({
headless: process.env.HEADLESS == "false" ? false : true,
});
let total_likes = 0;
let total_responses = 0;
let total_views = 0;
let p = 0;
//end = false時while迴圈會中斷
let end = true;
const page = await browser.newPage();
while (end) {
p == 0 ? await page.goto(ithelp_url) : await page.goto(ithelp_url + `?page=` + p);
await page.waitForSelector(".profile-main__title");
let elements = await page.$$(".qa-condition__count");
if (elements.length > 0) {
for (var i = 0; i < elements.length; i++) {
let tmp_text = await page.evaluate((el) => el.textContent, elements[i]);
if (i % 3 == 0) {
total_likes += parseInt(tmp_text);
} else if (i % 3 == 1) {
total_responses += parseInt(tmp_text);
} else if (i % 3 == 2) {
total_views += parseInt(tmp_text);
}
}
} else {
await browser.close();
end = false;
}
p++;
}
console.log({ "toal likes": total_likes, "toal responses": total_responses, "toal views": total_views });
})();
.env
# 填上自己想要爬蟲的頁面,下面是筆者個人的文章頁面喔
ITHELP_URL=https://ithelp.ithome.com.tw/users/20103256/articles
# 預設不開啟瀏覽器,如果你想開啟就改成false
HEADLESS=false
大家也可以到筆者的 Gihub 直接把專案 Clone 下來執行,下面是用筆者在 IT 邦幫忙文章網址的 Demo:
yarn
將套件安裝yarn start
即可執行感謝大家的閱讀,如果文章有幫助到你,按Like
可以讓我更有寫文的動力。
我在 Medium 平台 也分享了許多技術文章
❝ 主題涵蓋「MIS & DEVOPS、資料庫、前端、後端、MICROSFT 365、GOOGLE 雲端應用、自我修煉」希望可以幫助遇到相同問題、想自我成長的人。❞